﻿Imports CapaLogica.CL.Usuario
Imports CapaLogica.CL.Carrera

Public Class frmAsignarCarreraEstudiante
    Private id As Integer

    Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        Try
            If txtCedula.Text = "" Then
                MsgBox("Debe ingresar la cédula del estudiante.", MsgBoxStyle.Exclamation, "Error")
            Else
                Dim estudiante As Dictionary(Of String, Object) = GestorUsuario.buscarUsuarioPorCedula(txtCedula.Text, 1)
                cargarDatosEstudiante(estudiante)
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
        End Try
    End Sub


    Private Sub cargarDatosEstudiante(ByRef estudiante As Dictionary(Of String, Object))
        lblNombre.Text = "Nombre: " + estudiante.Item("ap1") + " " + estudiante.Item("ap2") + " " + estudiante.Item("nombre")
        lblCedula.Text = "Cédula: " + estudiante.Item("cedula")
        id = Val(estudiante.Item("id"))

        llenarLista(lbxCarreras, GestorCarrera.listarTodasLasCarreras())
        llenarLista(lbxSeleccionados, GestorCarrera.listarCarrerasEstudianteUi(id))
        eliminarElementosRepetidos(lbxCarreras, lbxSeleccionados)
    End Sub


    Private Sub cambiarElementosDeListas(ByRef plistaOrigen As ListBox, ByRef plistaDestino As ListBox)
        For n = 0 To plistaOrigen.SelectedItems.Count - 1
            plistaDestino.Items.Add(plistaOrigen.SelectedItems.Item(n))
        Next

        For n = 0 To plistaOrigen.SelectedItems.Count - 1
            plistaOrigen.Items.Remove(plistaOrigen.SelectedItems.Item(0))
        Next
    End Sub


    Private Function validar() As Boolean
        If lbxSeleccionados.Items.Count = 0 Then
            MsgBox("Debe seleccionar a menos una carrera para del estudiante.", MsgBoxStyle.Exclamation, "Error")
            Return False
        End If
        Return True
    End Function

    Private Sub refrescar()
        txtCedula.Text = ""
        lblCedula.Text = "Cédula:"
        lblNombre.Text = "Nombre:"

        limpiarListBox(lbxSeleccionados)
        limpiarListBox(lbxCarreras)

    End Sub

    Private Sub btnAsociar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsociar.Click
        If lbxCarreras.SelectedIndex > -1 Then
            cambiarElementosDeListas(lbxCarreras, lbxSeleccionados)

        Else
            MsgBox("Debe seleccionar al menos una carrera para cambiarla de lista.", MsgBoxStyle.Exclamation, "Error")
        End If
    End Sub

    Private Sub btnDesasociar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDesasociar.Click
        If lbxSeleccionados.SelectedIndex > -1 Then
            cambiarElementosDeListas(lbxSeleccionados, lbxCarreras)

        Else
            MsgBox("Debe seleccionar al menos una carrera para cambiarla de lista.", MsgBoxStyle.Exclamation, "Error")
        End If
    End Sub

    Private Sub tsbCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Close()
    End Sub

    Private Sub tsbGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbGuardar.Click

        If validar() Then
            Dim button As DialogResult = MessageBox.Show("¿Desea guardar los cambios de las carreras del estudiante?",
                                                                          Me.Text, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)
            If button = DialogResult.Yes Then
                Try

                    GestorUsuario.cambiarCarrerasDeEstudiante(id, obtenerIdsDeListBox(lbxSeleccionados))
                    MsgBox("¡Se han guardado los cambios!", MsgBoxStyle.Information, "Carreras del Estudiante")
                    refrescar()
                Catch ex As Exception
                    MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
                End Try

            Else
                MsgBox("¡No se han guardado los cambio!", MsgBoxStyle.Information, "Carreras del Estudiante")

            End If
        End If
    End Sub


    Private Sub tsbRefrescar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbRefrescar.Click
        refrescar()
    End Sub
End Class